home *** CD-ROM | disk | FTP | other *** search
- Path: news.larc.nasa.gov!amiga-request
- From: amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
- Subject: v91i043: Buttonask - replacement for AmigaDOS ASK command, Part01/01
- Reply-To: simpsonc@project4.computer-science.manchester.ac.uk
- Newsgroups: comp.sources.amiga
- Message-ID: <comp.sources.amiga:v91i043@ab20.larc.nasa.gov>
- Date: 03 Mar 91 23:21:00 GMT
- Approved: tadguy@uunet.UU.NET (Tad Guy)
- X-Mail-Submissions-To: amiga@uunet.uu.net
- X-Post-Discussions-To: comp.sys.amiga.misc
-
- Submitted-by: simpsonc@project4.computer-science.manchester.ac.uk
- Posting-number: Volume 91, Issue 043
- Archive-name: utilities/buttonask/part01
-
- [ includes uuencoded executables ...tad ]
-
- BUTTONASK
- ---------
-
- ButtonAsk is a replacement for the AmigaDOS ASK command. It takes a prompt
- string from the command line, echos it to standard output, and waits for
- either the left or right mouse button to be pressed. The program will then
- send a return code of either 5(WARN) or 0 to the system which can be
- interpreted by using the IF command. This program is mainly used in scripts.
-
- WAITBUTTONS
- -----------
-
- This is a small program which is used to detect when no mouse buttons are
- down. If you intend to use buttonask more than once in the same script then
- you should use this command to check that a button is not already down
- before calling buttonask.
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: ButtonAsk.s ButtonAsk.uu ReadMe WaitButtons.s
- # WaitButtons.uu
- # Wrapped by tadguy@ab20 on Sun Mar 3 18:20:57 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'ButtonAsk.s' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ButtonAsk.s'\"
- else
- echo shar: Extracting \"'ButtonAsk.s'\" \(2579 characters\)
- sed "s/^X//" >'ButtonAsk.s' <<'END_OF_FILE'
- X**************************************
- X* *
- X* ButtonAsk v1.0 *
- X* *
- X* (c) 1990 Chris Simpson *
- X* *
- X* USAGE: ButtonAsk <prompt> *
- X* *
- X* This program is a replacement for *
- X* the AmigaDOS ASK command except *
- X* that the mouse buttons are used *
- X* rather than entering 'y' or 'n' *
- X* For this program to work, some *
- X* text for the prompt must be given *
- X* in the command line. This text is *
- X* echoed to stdout and then a mouse *
- X* button is waited for. Pressing the *
- X* left button returns a return code *
- X* of 5(WARN) and pressing the right *
- X* button returns a return code of 0. *
- X* *
- X**************************************
- X
- X SECTION ButtonAsk,code_c ; Put into chip ram
- X
- X INCDIR include: ; Read include files
- X INCLUDE exec/exec_lib.i
- X INCLUDE libraries/dos_lib.i
- X
- XLeftReg equ $bfe001 ; Set up button registers
- XRightReg equ $dff016
- X
- X move.l d0,Length ; Store length of CLI line
- X move.l a0,Address ; Store address of CLI line
- X
- X move.l #100,ReturnCode ; Default return code
- X
- X lea DOSName,a1 ; Try to open dos library
- X clr.l d0
- X CALLEXEC OpenLibrary
- X tst.l d0 ; Quit if not opened
- X beq Error
- X move.l d0,_DOSBase ; Else store dos base
- X
- X CALLDOS Output ; Find standard output
- X move.l d0,OutHandle ; Store handle address
- X
- X move.l Length,d0 ; Get back length
- X move.l Address,a0 ; Get back address
- X
- X cmp.l #1,Length ; Make sure not just linefeed
- X bgt GotPrompt
- X
- X move.l OutHandle,d1 ; Write USAGE text
- X move.l #Usage,d2
- X move.l #UsageEnd-Usage,d3
- X CALLDOS Write
- X bra CloseDOS
- X
- X
- XGotPrompt move.l OutHandle,d1 ; Write the prompt out
- X move.l a0,d2
- X move.l d0,d3
- X CALLDOS Write
- X
- XWaitForButton btst #6,$bfe001
- X beq LeftPressed
- X
- X btst #10,$dff016
- X beq RightPressed
- X
- X bra WaitForButton
- X
- XLeftPressed move.l #5,ReturnCode
- X bra CloseDOS
- X
- XRightPressed move.l #0,ReturnCode
- X
- XCloseDOS move.l _DOSBase,a1 ; Close dos library
- X CALLEXEC CloseLibrary
- X
- X move.l ReturnCode,d0 ; Exit with return code
- XError rts
- X
- X*** Data ***
- X
- XDOSName dc.b "dos.library",0
- X even
- X_DOSBase dc.l 0
- X
- XOutHandle dc.l 0
- X
- XUsage dc.b "ButtonAsk v1.0 (c) 1990 Chris Simpson",13,10,13,10
- X dc.b "USAGE: ButtonAsk <prompt>",13,10,13,10
- X dc.b "Return code will be ... 5 if left button pressed",13,10
- X dc.b " 0 if right button pressed",13,10,0
- XUsageEnd even
- X
- XAddress dc.l 0
- XLength dc.l 0
- X
- XReturnCode dc.l 0
- X
- END_OF_FILE
- if test 2579 -ne `wc -c <'ButtonAsk.s'`; then
- echo shar: \"'ButtonAsk.s'\" unpacked with wrong size!
- fi
- # end of 'ButtonAsk.s'
- fi
- if test -f 'ButtonAsk.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ButtonAsk.uu'\"
- else
- echo shar: Extracting \"'ButtonAsk.uu'\" \(811 characters\)
- sed "s/^X//" >'ButtonAsk.uu' <<'END_OF_FILE'
- Xbegin 644 ButtonAsk
- XM```#\P`````````!``````````!```!J0``#Z0```&HCP````9XCR````9HCB
- XM_````&0```&B0_D```#:0H`L>``$3J[]V$J`9P``KB/`````YBQY````YDZN#
- XM_\0CP````.H@.0```9X@>0```9H,N0````$```&>;@``(B(Y````ZB0\````6
- XM[B8\````K"QY````YDZN_]!@``!*(CD```#J)`@F`"QY````YDZN_]`(.0`&P
- XM`+_@`6<``!((.0`*`-_P%F<``!1@`/_F(_P````%```!HF````PC_```````;
- XM``&B(GD```#F+'@`!$ZN_F(@.0```:).=61O<RYL:6)R87)Y````````````0
- XM0G5T=&]N07-K('8Q+C`@(""I(#$Y.3`@0VAR:7,@4VEM<'-O;@T*#0I54T%'\
- XM13H@0G5T=&]N07-K(#QP<F]M<'0^#0H-"E)E='5R;B!C;V1E('=I;&P@8F4@^
- XM+BXN(#4@:68@;&5F="!B=71T;VX@<')E<W-E9`T*("`@("`@("`@("`@("`@B
- XM("`@("`@("`@,"!I9B!R:6=H="!B=71T;VX@<')E<W-E9`T*````````````F
- XM```````````#[````!,``````````@````@````2````&````"X````T````8
- XM/@```$0```!*````5````%X```!D````<````'X```"(````L@```,````#&0
- X,````U`````````/R)
- X``
- Xend
- Xsize 552
- END_OF_FILE
- if test 811 -ne `wc -c <'ButtonAsk.uu'`; then
- echo shar: \"'ButtonAsk.uu'\" unpacked with wrong size!
- fi
- # end of 'ButtonAsk.uu'
- fi
- if test -f 'ReadMe' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ReadMe'\"
- else
- echo shar: Extracting \"'ReadMe'\" \(1175 characters\)
- sed "s/^X//" >'ReadMe' <<'END_OF_FILE'
- XBUTTONASK
- X---------
- X
- X ButtonAsk is a replacement for the AmigaDOS ASK command. It takes a prompt
- Xstring from the command line, echos it to standard output, and waits for
- Xeither the left or right mouse button to be pressed. The program will then
- Xsend a return code of either 5(WARN) or 0 to the system which can be
- Xinterpreted by using the IF command. This program is mainly used in scripts.
- X
- XEXAMPLE:
- X
- X BUTTONASK Press a mouse button
- X IF WARN
- X ECHO "Hello"
- X ELSE
- X ECHO "GoodBye"
- X ENDIF
- X
- X This script will print out the message "Press a mouse button", and then
- Xwait for mouse button to be pressed. Then either the Hello or GoodBye
- Xmessage will be output depending which button was pressed. See the source
- Xfile for more details
- X
- XWAITBUTTONS
- X-----------
- X
- X This is a small program which is used to detect when no mouse buttons are
- Xdown. If you intend to use buttonask more than once in the same script then
- Xyou should use this command to check that a button is not already down
- Xbefore calling buttonask.
- X
- XDISTRIBUTION:
- X
- X ButtonAsk is copyright 1990 Chris Simpson but may be distributed in any
- Xway as long as this file, WaitButtons, and both source files are included.
- END_OF_FILE
- if test 1175 -ne `wc -c <'ReadMe'`; then
- echo shar: \"'ReadMe'\" unpacked with wrong size!
- fi
- # end of 'ReadMe'
- fi
- if test -f 'WaitButtons.s' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'WaitButtons.s'\"
- else
- echo shar: Extracting \"'WaitButtons.s'\" \(172 characters\)
- sed "s/^X//" >'WaitButtons.s' <<'END_OF_FILE'
- XLeftReg equ $bfe001 ; Set up button registers
- XRightReg equ $dff016
- X
- XWaitForButton btst #6,$bfe001
- X beq WaitForButton
- X
- X btst #10,$dff016
- X beq WaitForButton
- X
- X rts
- X
- X
- END_OF_FILE
- if test 172 -ne `wc -c <'WaitButtons.s'`; then
- echo shar: \"'WaitButtons.s'\" unpacked with wrong size!
- fi
- # end of 'WaitButtons.s'
- fi
- if test -f 'WaitButtons.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'WaitButtons.uu'\"
- else
- echo shar: Extracting \"'WaitButtons.uu'\" \(131 characters\)
- sed "s/^X//" >'WaitButtons.uu' <<'END_OF_FILE'
- Xbegin 644 WaitButtons
- XM```#\P`````````!```````````````'```#Z0````<(.0`&`+_@`6<`__8(\
- X3.0`*`-_P%F<`_^I.=0`````#\@``P
- X``
- Xend
- Xsize 64
- END_OF_FILE
- if test 131 -ne `wc -c <'WaitButtons.uu'`; then
- echo shar: \"'WaitButtons.uu'\" unpacked with wrong size!
- fi
- # end of 'WaitButtons.uu'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
- Mail comments to the moderator at <amiga-request@uunet.uu.net>.
- Post requests for sources, and general discussion to comp.sys.amiga.misc.
-